home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Audio / Patchmix / XWindowsSource / x.h < prev    next >
C/C++ Source or Header  |  1992-03-28  |  14KB  |  502 lines

  1. /*  $Header: x.h,v 1.2 90/09/08 12:52:20 mara Exp $";
  2.  *
  3.  *  x.h
  4.  *
  5.  *  Written by Mara Helmuth
  6.  *
  7.  *  Description: X macros for Cmix X graphical interface
  8.  * 
  9.  *  $Log:    x.h,v $
  10.  * Revision 1.2  90/09/08  12:52:20  mara
  11.  * side panel
  12.  * 
  13.  * Revision 1.1  90/08/27  17:11:33  mara
  14.  * Initial revision
  15.  * 
  16.  */
  17.  
  18. #include <g++/stdio.h>
  19. #include <g++/std.h>
  20.  
  21. extern "C"
  22. {
  23. #include <X11/Xlib.h>
  24. #include <X11/Xutil.h>
  25. #include "/usr/local/src/lxt/lxt.h"
  26.  
  27.  
  28. #include "bitmap/oscil.bitmap"
  29. #include "bitmap/buzz.bitmap"
  30. #include "bitmap/evp.bitmap"
  31. #include "bitmap/add.bitmap"
  32. #include "bitmap/subtract.bitmap"
  33. #include "bitmap/multiply.bitmap"
  34. #include "bitmap/divide.bitmap"
  35. #include "bitmap/out.bitmap"
  36. #include "bitmap/dot.bitmap"
  37. #include "bitmap/rect.bitmap"
  38. }
  39.  
  40. #define    SFRAME_WIDTH    400
  41. #define    SFRAME_HEIGHT    150
  42. #define    DFRAME_WIDTH    400
  43. #define    DFRAME_HEIGHT    200
  44.  
  45. #ifdef    WOOF
  46.  
  47. #define WFRAME_WIDTH    900
  48. #define WFRAME_HEIGHT    900
  49. #define PFRAME_WIDTH    900
  50. #define PFRAME_HEIGHT    150
  51. #define MFRAME_WIDTH    900
  52. #define MFRAME_HEIGHT     50
  53. #define CFRAME_WIDTH    900 
  54. #define CFRAME_HEIGHT    700
  55. #define CANVAS_WIDTH    900
  56. #define CANVAS_HEIGHT    700
  57. #define TFRAME_WIDTH    400
  58. #define TFRAME_HEIGHT    500
  59. #define    QFRAME_WIDTH    400 
  60. #define    QFRAME_HEIGHT    150
  61. #define    OFRAME_WIDTH    400
  62. #define    OFRAME_HEIGHT    200
  63. #define    EFRAME_WIDTH    500
  64. #define    EFRAME_HEIGHT    200
  65. #define    UBITMAP_SIZE    100
  66. #define    SBITMAP_SIZE     50
  67.  
  68. #else
  69. #define WFRAME_WIDTH    700
  70. #define WFRAME_HEIGHT    700
  71. #define PFRAME_WIDTH    700
  72. #define PFRAME_HEIGHT    150
  73. #define MFRAME_WIDTH    700
  74. #define MFRAME_HEIGHT     40
  75. #define CFRAME_WIDTH    700 
  76. #define CFRAME_HEIGHT    510
  77. #define CANVAS_WIDTH    700
  78. #define CANVAS_HEIGHT    500
  79. #define TFRAME_WIDTH    400
  80. #define TFRAME_HEIGHT    500
  81. #define    QFRAME_WIDTH    250 
  82. #define    QFRAME_HEIGHT    100
  83. #define    OFRAME_WIDTH    300
  84. #define    OFRAME_HEIGHT    200
  85. #define    EFRAME_WIDTH    400
  86. #define    EFRAME_HEIGHT    200
  87. #define    UBITMAP_SIZE     72
  88. #define    SBITMAP_SIZE     36
  89.  
  90. #endif
  91.  
  92. #ifdef    WOOF
  93.  
  94. #define FONT        "fg-18"
  95. #define SMALL_FONT    "fg-13"
  96.  
  97. #else
  98.  
  99. #define FONT        "9x15"
  100. #define SMALL_FONT    "8x13"
  101.  
  102. #endif
  103.  
  104. #define OK        0
  105. #define NO        1
  106.  
  107. #ifdef     XSET
  108.     
  109. Display *dpy;
  110. XFontStruct *fontstruct, *fontstructS;
  111. Window wwin, pwin, cwin, canvas_win, mwin, mbar_win;
  112. Window qwin,oscwin,datwin,sidewin,buzzwin,evpwin;
  113. Window twin;
  114. Pixmap canvas_pm, mbar_pm;
  115. GC canvas_gc, mbar_gc, sf_gc, clear_gc;
  116.  
  117. Panel *panel;
  118. Panel_item *title;
  119. Panel_item *pi_name, *pi_srate, *pi_inchans, *pi_outchans;
  120. Panel_item *quit_button;
  121. Panel_item *compile_button;
  122. Panel_item *run_button;
  123. Panel_item *set_data_button;
  124. Panel_item *rescale_button;
  125. Panel_item *play_button;
  126. Panel_item *reset_button;
  127. Panel_item *font_button;
  128.  
  129. Panel *qpanel;
  130. Panel_item *qmsg;
  131. Panel_item *ok_button;
  132. Panel_item *no_button;
  133.  
  134. Panel *oscpanel;
  135. Panel_item *osctitle;
  136. Panel_item *oscamp;
  137. Panel_item *oscfreq;
  138. Panel_item *oscphs;
  139. Panel_item *resetosc_button;
  140. Panel_item *quitosc_button;
  141.  
  142. Panel *buzzpanel;
  143. Panel_item *buzztitle;
  144. Panel_item *buzzamp;
  145. Panel_item *buzzfreq;
  146. Panel_item *buzznhar;
  147. Panel_item *resetbuzz_button;
  148. Panel_item *quitbuzz_button;
  149.  
  150. Panel *evppanel;
  151. Panel_item *evptitle;
  152. Panel_item *evpamp;
  153. Panel_item *evprise;
  154. Panel_item *evpdecay;
  155. Panel_item *evpfunc;
  156. Panel_item *resetevp_button;
  157. Panel_item *quitevp_button;
  158.  
  159. Panel *sidepanel;
  160. Panel_item *sidetitle;
  161. Panel_item *sidein0;
  162. Panel_item *sidein1;
  163. Panel_item *sidetoggle;
  164. Panel_item *resetside_button;
  165. Panel_item *quitside_button;
  166.  
  167. Panel *datpanel;
  168. Panel_item *dattitle;
  169. Panel_item *datout;
  170. Panel_item *datdur;
  171. Panel_item *datamp;
  172. Panel_item *resetdat_button;
  173. Panel_item *quitdat_button;
  174.  
  175. Canvas *canvas, *menu_bar;
  176. int header_spaces = 7;
  177.  
  178. Menu *generator_menu, *processor_menu, *connect_menu; 
  179. Menu *converter_menu, *options_menu, *help_menu;
  180.  
  181. XImage *dot_im, *oscil_im, *add_im, *subtract_im, *multiply_im, *divide_im, *out_im, *rect_im, *buzz_im, *evp_im;
  182.  
  183. Textsw *text_read;
  184.  
  185. char *progname;
  186. char font[20], small_font[20];
  187. unsigned long black, white;
  188. char *string;
  189.  
  190. int lx, ly;
  191. int text, tx, ty;
  192.  
  193. int     find_ugen(int, int);     /* find functions defined in xselect.c */
  194. param_str *find_ugen_param(int, int);
  195. void    ugen_select(int, int);
  196. connector(int, int);
  197. make_oscil(ugen_str *);
  198. make_buzz(ugen_str *);
  199. make_evp(ugen_str *);
  200. make_out(ugen_str *);
  201. make_side(ugen_str *);
  202. make_rand(ugen_str *);
  203. zone_oscil(ugen_str *);
  204. zone_evp(ugen_str *);
  205. zone_buzz(ugen_str *);
  206. zone_out(ugen_str *);
  207. zone_side(side_str *, int, int);
  208. zone_rand(side_str *, int, int);
  209. draw_oscil(int, int, int);
  210. draw_evp(int, int, int);
  211. draw_buzz(int, int, int);
  212. draw_out(int);
  213. draw_side(int, int, XImage*);
  214. draw_rand(int, int, XImage*);
  215. pm_select(XPointerMovedEvent *);
  216. bp_select(XButtonPressedEvent *);
  217.  
  218. void linker(int, ugen_str *);
  219. void     errx(char *);
  220.  
  221. void    oscil_params(ugen_str *);
  222. void    evp_params(ugen_str *);
  223. void    buzz_params(ugen_str *);
  224. void    side_params(ugen_str *);
  225. void    set_params(int, int);
  226. void    oscamp_proc(Panel *p, Panel_item *pi, char *s);
  227. void    oscfreq_proc(Panel *p, Panel_item *pi, char *s);
  228. void    oscphs_proc(Panel *p, Panel_item *pi, char *s);
  229. void    reset_oscil(Panel *p, Panel_item *pi);
  230. void    quit_oscil(Panel *p, Panel_item *pi);
  231. void    evprise_proc(Panel *p, Panel_item *pi, char *s);
  232. void    evpamp_proc(Panel *p, Panel_item *pi, char *s);
  233. void    evpdecay_proc(Panel *p, Panel_item *pi, char *s);
  234. void    reset_evp(Panel *p, Panel_item *pi);
  235. void    quit_evp(Panel *p, Panel_item *pi);
  236. void    buzzamp_proc(Panel *p, Panel_item *pi, char *s);
  237. void    buzzfreq_proc(Panel *p, Panel_item *pi, char *s);
  238. void    buzznhar_proc(Panel *p, Panel_item *pi, char *s);
  239. void    reset_buzz(Panel *p, Panel_item *pi);
  240. void    quit_buzz(Panel *p, Panel_item *pi);
  241. void    sidein0_proc(Panel *p, Panel_item *pi, char *s);
  242. void    sidein1_proc(Panel *p, Panel_item *pi, char *s);
  243. void    reset_side(Panel *p, Panel_item *pi);
  244. void    quit_side(Panel *p, Panel_item *pi);
  245.  
  246. void    ok(Panel *p, Panel_item *pi);
  247. void    no(Panel *p, Panel_item *pi);
  248. void    reset_choice(Panel *p, Panel_item *pi);
  249. int    pi_name_proc(Panel *p, Panel_item *pi, char *s);
  250. int    pi_srate_proc(Panel *p, Panel_item *pi, char *s);
  251. void    compile(Panel *p, Panel_item *pi);
  252. void    set_data(Panel *p, Panel_item *pi);
  253. void    run(Panel *p, Panel_item *pi);
  254. void    rescale(Panel *p, Panel_item *pi);
  255. void    play(Panel *p, Panel_item *pi);
  256. void    quit(Panel *p, Panel_item *pi);
  257. void    reset_dat(Panel *p, Panel_item *pi);
  258. void    quit_dat(Panel *p, Panel_item *pi);
  259. int    datout_proc(Panel *p, Panel_item *pi, char *s);
  260. int    datdur_proc(Panel *p, Panel_item *pi, char *s);
  261. int    datamp_proc(Panel *p, Panel_item *pi, char *s);
  262.  
  263. void     draw_menubar();
  264. void    setup_menus();
  265. void    oscil(Menu *m, Menu_item *mi);
  266. void    buzz(Menu *m, Menu_item *mi);
  267. void    rand(Menu *m, Menu_item *mi);
  268. void    comb(Menu *m, Menu_item *mi);
  269. void    elliptical(Menu *m, Menu_item *mi);
  270. void    evp(Menu *m, Menu_item *mi);
  271. void    pluck(Menu *m, Menu_item *mi);
  272. void    reson(Menu *m, Menu_item *mi);
  273. void    reverb(Menu *m, Menu_item *mi);
  274. void    pitchtohertz(Menu *m, Menu_item *mi);
  275. void    pitchtooct(Menu *m, Menu_item *mi);
  276. void    hertztopitch(Menu *m, Menu_item *mi);
  277. void    hertztooct(Menu *m, Menu_item *mi);
  278. void    octtopitch(Menu *m, Menu_item *mi);
  279. void    octtohertz(Menu *m, Menu_item *mi);
  280. void    unlinkp(Menu *m, Menu_item *mi);
  281. void    move_ugen(Menu *m, Menu_item *mi);
  282. void    remove_ugen(Menu *m, Menu_item *mi);
  283. void    framing(Menu *m, Menu_item *mi);
  284. void    read_function(Menu *m, Menu_item *mi);
  285.  
  286. XWMHints xwmh= {
  287.     (InputHint | StateHint),    /* flags */
  288.     False,                /* input */
  289.     NormalState,            /* initial_state */
  290.     0,                /* icon pixmap */
  291.     0,                /* icon window */
  292.     0, 0,                /* icon location */
  293.     0,                /* icon mask */
  294.     0,                /* Window group */
  295. };
  296.  
  297. extern ugen_str    ugen[MAX];
  298. extern ugen_str temp_ugen;
  299. extern data_str data;
  300. int        ugen_no = 1, n_ugens = 0;
  301. int        param_ugen_no;
  302. int         first,first_conn = 1,first_out = 1,first_add = 1;
  303. int        first_sub = 1; first_mult = 1; first_div = 1;
  304. int        first_ugen = 0;
  305. int        firstx,firsty,firstvx,firstvy;
  306. int        mbar_setting;
  307.  
  308. #else
  309.  
  310. extern Display *dpy;
  311. extern XFontStruct *fontstruct, *fontstructS;
  312. extern Window wwin, pwin, cwin, canvas_win, mwin, mbar_win;
  313. extern Pixmap canvas_pm, mbar_pm;
  314. extern GC canvas_gc, mbar_gc, sf_gc, clear_gc;
  315.  
  316. extern Panel *panel;
  317. extern Panel_item *title;
  318. extern Panel_item *pi_name, *pi_srate, *pi_inchans, *pi_outchans;
  319. extern Panel_item *quit_button;
  320. extern Panel_item *compile_button;
  321. extern Panel_item *set_data_button;
  322. extern Panel_item *run_button;
  323. extern Panel_item *rescale_button;
  324. extern Panel_item *play_button;
  325. extern Panel_item *reset_button;
  326. extern Panel_item *font_button;
  327.  
  328. extern Panel *qpanel;
  329. extern Panel_item *qmsg;
  330. extern Panel_item *ok_button;
  331. extern Panel_item *no_button;
  332.  
  333. extern Panel *oscpanel;
  334. extern Panel_item *osctitle;
  335. extern Panel_item *oscamp;
  336. extern Panel_item *oscfreq;
  337. extern Panel_item *oscphs;
  338. extern Panel_item *resetosc_button;
  339. extern Panel_item *quitosc_button;
  340.  
  341. extern Panel *evppanel;
  342. extern Panel_item *evptitle;
  343. extern Panel_item *evpamp;
  344. extern Panel_item *evprise;
  345. extern Panel_item *evpdecay;
  346. extern Panel_item *evpfunc;
  347. extern Panel_item *resetevp_button;
  348. extern Panel_item *quitevp_button;
  349.  
  350. extern Panel *buzzpanel;
  351. extern Panel_item *buzztitle;
  352. extern Panel_item *buzzamp;
  353. extern Panel_item *buzzfreq;
  354. extern Panel_item *buzznhar;
  355. extern Panel_item *resetbuzz_button;
  356. extern Panel_item *quitbuzz_button;
  357.  
  358. extern Panel *sidepanel;
  359. extern Panel_item *title;
  360. extern Panel_item *sidein0;
  361. extern Panel_item *sidein1;
  362. extern Panel_item *sidetoggle;
  363. extern Panel_item *resetside_button;
  364. extern Panel_item *quitside_button;
  365.  
  366. extern Panel *datpanel;
  367. extern Panel_item *dattitle;
  368. extern Panel_item *datout;
  369. extern Panel_item *datdur;
  370. extern Panel_item *datamp;
  371. extern Panel_item *resetdat_button;
  372. extern Panel_item *quitdat_button;
  373.  
  374. extern Canvas *canvas, *menu_bar;
  375. extern int header_spaces;
  376.  
  377. extern Menu *generator_menu, *processor_menu, *connect_menu; 
  378. extern Menu *options_menu, *help_menu, *converter_menu;
  379.  
  380. extern Textsw *text_read;
  381.  
  382. extern char *progname;
  383. extern char font[20], small_font[20];
  384. extern unsigned long black, white;
  385. extern char *string;
  386.  
  387. extern XImage *dot_im, *oscil_im, *add_im, *subtract_im, *multiply_im, *divide_im, *out_im, *rect_im, *buzz_im, *evp_im;
  388.  
  389. extern int lx, ly;
  390. extern int text, tx, ty;
  391.  
  392. extern int find_ugen(int, int);
  393. extern param_str *find_ugen_param(int, int);
  394. extern void ugen_select(int, int);
  395. extern connector(int, int);
  396.  
  397. extern make_oscil(ugen_str *);
  398. extern make_evp(ugen_str *);
  399. extern make_buzz(ugen_str *);
  400. extern make_out(ugen_str *);
  401. extern make_side(ugen_str *);
  402. extern make_rand(ugen_str *);
  403. extern zone_oscil(ugen_str *);
  404. extern zone_evp(ugen_str *);
  405. extern zone_buzz(ugen_str *);
  406. extern zone_out(ugen_str *);
  407. extern zone_side(side_str *, int, int);
  408. extern zone_rand(ugen_str *);
  409. extern draw_oscil(int, int, int);
  410. extern draw_evp(int, int, int);
  411. extern draw_buzz(int, int, int);
  412. extern draw_out(int);
  413. extern draw_side(int, int, XImage*);
  414. extern draw_rand(int, int, int);
  415. extern pm_select(XPointerMovedEvent *);
  416. extern bp_select(XButtonPressedEvent *);
  417.  
  418. extern void linker(int, ugen_str *);
  419. extern void errx(char *);
  420.  
  421. extern void set_params(int, int);
  422. extern void oscil_params(ugen_str *u);
  423. extern void evp_params(ugen_str *u);
  424. extern void buzz_params(ugen_str *u);
  425. extern void side_params(ugen_str *u);
  426.  
  427. extern void oscamp_proc(Panel *p, Panel_item *pi, char *s);
  428. extern void oscfreq_proc(Panel *p, Panel_item *pi, char *s);
  429. extern void oscphs_proc(Panel *p, Panel_item *pi, char *s);
  430. extern void reset_oscil(Panel *p, Panel_item *pi);
  431. extern void quit_oscil(Panel *p, Panel_item *pi);
  432.  
  433. extern void evprise_proc(Panel *p, Panel_item *pi, char *s);
  434. extern void evpamp_proc(Panel *p, Panel_item *pi, char *s);
  435. extern void evpdecay_proc(Panel *p, Panel_item *pi, char *s);
  436. extern void reset_evp(Panel *p, Panel_item *pi);
  437. extern void quit_evp(Panel *p, Panel_item *pi);
  438.  
  439. extern void buzzamp_proc(Panel *p, Panel_item *pi, char *s);
  440. extern void buzzfreq_proc(Panel *p, Panel_item *pi, char *s);
  441. extern void buzznhar_proc(Panel *p, Panel_item *pi, char *s);
  442. extern void reset_buzz(Panel *p, Panel_item *pi);
  443. extern void quit_buzz(Panel *p, Panel_item *pi);
  444.  
  445. extern void sidein0_proc(Panel *p, Panel_item *pi, char *s);
  446. extern void sidein1_proc(Panel *p, Panel_item *pi, char *s);
  447. extern void reset_side(Panel *p, Panel_item *pi);
  448. extern void quit_side(Panel *p, Panel_item *pi);
  449.  
  450. extern void no(Panel *p, Panel_item *pi);
  451. extern void ok(Panel *p, Panel_item *pi);
  452. extern void reset_choice(Panel *p, Panel_item *pi);
  453. extern int  pi_name_proc(Panel *p, Panel_item *pi, char *s);
  454. extern int  pi_srate_proc(Panel *p, Panel_item *pi, char *s);
  455. extern void compile(Panel *p, Panel_item *pi);
  456. extern void set_data(Panel *p, Panel_item *pi);
  457. extern void run(Panel *p, Panel_item *pi);
  458. extern void rescale(Panel *p, Panel_item *pi);
  459. extern void play(Panel *p, Panel_item *pi);
  460. extern void quit(Panel *p, Panel_item *pi);
  461. extern int  datout_proc(Panel *p, Panel_item *pi);
  462. extern int  datdur_proc(Panel *p, Panel_item *pi);
  463. extern int  datamp_proc(Panel *p, Panel_item *pi);
  464. extern void reset_dat(Panel *p, Panel_item *pi);
  465. extern void quit_dat(Panel *p, Panel_item *pi);
  466.  
  467. extern void draw_menubar();
  468. extern void setup_menus();
  469.  
  470. extern void oscil(Menu *m, Menu_item *mi);
  471. extern void buzz(Menu *m, Menu_item *mi);
  472. extern void randp(Menu *m, Menu_item *mi);
  473. extern void comb(Menu *m, Menu_item *mi);
  474. extern void elliptical(Menu *m, Menu_item *mi);
  475. extern void evp(Menu *m, Menu_item *mi);
  476. extern void pluck(Menu *m, Menu_item *mi);
  477. extern void reson(Menu *m, Menu_item *mi);
  478. extern void reverb(Menu *m, Menu_item *mi);
  479. extern void pitchtohertz(Menu *m, Menu_item *mi);
  480. extern void pitchtooct(Menu *m, Menu_item *mi);
  481. extern void hertztopitch(Menu *m, Menu_item *mi);
  482. extern void hertztooct(Menu *m, Menu_item *mi);
  483. extern void octtopitch(Menu *m, Menu_item *mi);
  484. extern void octtohertz(Menu *m, Menu_item *mi);
  485. extern void linkp(Menu *m, Menu_item *mi);
  486. extern void unlinkp(Menu *m, Menu_item *mi);
  487. extern void move_ugen(Menu *m, Menu_item *mi);
  488. extern void remove_ugen(Menu *m, Menu_item *mi);
  489. extern void framing(Menu *m, Menu_item *mi);
  490. extern void read_function(Menu *m, Menu_item *mi);
  491.  
  492. extern ugen_str    ugen[MAX];
  493. extern ugen_str temp_ugen;
  494. extern data_str data;
  495. extern ugen_no, n_ugens, first_conn, first_out, first_add;
  496. extern first_sub, first_mult, first_div;
  497. extern first_ugen,first, param_ugen_no;
  498. int    firstx,firsty,firstvx,firstvy;
  499. int    mbar_setting;
  500.  
  501. #endif
  502.